package com.hy.main.demo.rabbitmq;

import com.rabbitmq.client.*;

/**
 * @Author yang DongYong
 * @Date 2022/5/8 - 05 - 08 - 3:15
 * @Description: com.hy.main.demo.rabbitmq
 * @version: 1.0
 * 消息消费者
 */
public class Consumer {
    // 队列名称
    public static final String QUEUE_NAME = "Hello";

    //测试方法
    public static void main(String[] args) throws Exception {
        // 创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 工厂ip 连接rabbitMq的队列
        factory.setHost("127.0.0.1");
        factory.setUsername("guest");
        factory.setPassword("guest");
        // 创建连接
        Connection connection = factory.newConnection();
        // 获取信道
        Channel channel = connection.createChannel();
        // 匿名内部类方式接收消息 接收消息的回调
        DeliverCallback deliverCallback = (consumerTag, message) -> System.out.println(new String(message.getBody()));
        // 取消消息的回调
        CancelCallback cancelCallback = consumerTag -> System.out.println("消息消费被中断");


        /**
         * 消费消息
         * 1.消费那个队列
         * 2.消费成功之后是否要应答 true表示应答 false表示手动应答
         * 3.消费者未消费成功的回调
         * 4.消费者取消消费的回调
         */

        channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);
    }
}
